﻿using System;
using Clinica_Frba.DataClasses;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;


namespace Clinica_Frba.DataClasses
{
    public class BonoConsulta
    {
        public int bc_id { get; set; }
        public int bc_compra_id { get; set; }
        public int count { get; set; }
        public int cod_plan { get; set; }
        public int cod_turno { get; set; }
        public int precio { get; set; }
        public bool bc_habilitado { get; set; }
        public int grupo_familiar { get; set; }

        public BonoConsulta(Afiliado unAfiliado)
        {
            precio = Convert.ToInt32((new PlanMedico(Convert.ToInt32(unAfiliado.afil_Plan_Medico))).plme_precio_cons);
            cod_plan = Convert.ToInt32(unAfiliado.afil_Plan_Medico);
            grupo_familiar = Convert.ToInt32(unAfiliado.afil_Grupo_familiar);
        }

        public BonoConsulta(int codigo)
        {
            bc_id = codigo;
            List<SqlParameter> ListaParametros = new List<SqlParameter>();
            ListaParametros.Add(new SqlParameter("@codigo", codigo));

            SqlDataReader lector = DataRepository.RepositoryBase.realizarConsulta(
            "SELECT * FROM vacuna_gdd.Compra_bono JOIN vacuna_gdd.Bono_Consulta ON cobo_id = bc_compra_id JOIN vacuna_gdd.Afiliado ON cobo_afiliado_id = afil_id where bc_id=@codigo", "Texto", ListaParametros);
        
            if (lector.HasRows)
            {
                lector.Read();
                cod_plan = (int)(decimal)lector["cobo_plan"];
                bc_compra_id = (int)(decimal)lector["bc_compra_id"];
                Compra_bono unaCompra = new Compra_bono(bc_compra_id);
                grupo_familiar = (int)(decimal)lector["afil_grupo_familiar"];
                bc_habilitado = (bool)lector["bc_habilitado"];
            }
        }

        public bool PuedeUsarlo(int grupo)
        {
            if (grupo == grupo_familiar)
            {
                return true;
            }
            else { return false; }
        }

        public bool UsarTurno(Afiliado afiliado, Turno turno)
        {

            //Para usar un turno se cuentan las consultas del afiliado

            int cant_atenciones = 0;
            List<SqlParameter> ListaParametros3 = new List<SqlParameter>();
            ListaParametros3.Add(new SqlParameter("@afiliado", afiliado.afil_id));
            String query = @"SELECT COUNT(*) AS cantidad_atenciones
                             FROM vacuna_gdd.Atencion_medica JOIN vacuna_gdd.Turno ON turn_id = atme_turno_id
                             WHERE turn_afiliado_id = @afiliado";

            SqlDataReader lector = DataRepository.RepositoryBase.realizarConsulta(query, "Texto", ListaParametros3);
            if (lector.HasRows)
            {
                lector.Read();
                cant_atenciones = (int)lector["cantidad_atenciones"] + 1;
            }

            //Se registra la llegada al turno de la atención medica
            DateTime horario_llegada = (DateTime)(DateTime.Parse(System.Configuration.ConfigurationSettings.AppSettings["Fecha"])).AddHours(System.DateTime.Now.TimeOfDay.Hours).AddMinutes(System.DateTime.Now.Minute);
            List<SqlParameter> ListaParametros2 = new List<SqlParameter>();
            ListaParametros2.Add(new SqlParameter("@codigo", turno.afil_id));
            ListaParametros2.Add(new SqlParameter("@horario_llegada", (DateTime)horario_llegada));

            DataRepository.RepositoryBase.InsertarElementos("update vacuna_gdd.Atencion_medica set atme_fecha_hora = @horario_llegada where atme_turno_id=@codigo ", "Texto", ListaParametros2);

            //Usar el Bono_Consulta y registrar afil_cant_consultas

            List<SqlParameter> ListaParametros = new List<SqlParameter>();
            ListaParametros.Add(new SqlParameter("@codigo", bc_id));
            ListaParametros.Add(new SqlParameter("@cant", cant_atenciones));

            return DataRepository.RepositoryBase.InsertarElementos("update vacuna_gdd.Bono_Consulta set bc_habilitado = 0, bc_consulta_num = @cant where bc_id = @codigo", "Texto", ListaParametros);
        }
    }
}